{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "mode_regression.ipynb",
      "provenance": [],
      "collapsed_sections": [],
      "last_runtime": {
        "build_target": "//learning/brain/python/client:colab_notebook_py3",
        "kind": "private"
      }
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "bZCvVbB1gbGH",
        "colab_type": "text"
      },
      "source": [
        "***Copyright 2020 Google LLC.***\n",
        "\n",
        "Licensed under the Apache License, Version 2.0 (the \"License\");"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "X_Kwbd8GgW6k",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#@title Default title text\n",
        "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
        "# you may not use this file except in compliance with the License.\n",
        "# You may obtain a copy of the License at\n",
        "#\n",
        "# https://www.apache.org/licenses/LICENSE-2.0\n",
        "#\n",
        "# Unless required by applicable law or agreed to in writing, software\n",
        "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
        "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
        "# See the License for the specific language governing permissions and\n",
        "# limitations under the License."
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "eRfbvz9TC5mC",
        "colab_type": "text"
      },
      "source": [
        "# Goal\n",
        "We want to build a model $h_\\theta(s) \\rightarrow a^*$ which predicts the mode $a^*$ of some target distribution, for which we have unnormalized log-probabilities, $y$.\n",
        "\n",
        "Stated another way, we want to find an appropriate loss L s.t. it is tractable to solve\n",
        "$$\n",
        "\\text{argmin}_\\theta \\sum\\limits_{i=1}^N L(\\pi(a_i \\mid h_\\theta(s_i)), y_i)\n",
        "$$\n",
        "where $\\theta$ are model parameters, $h$ is a model that depends on context $s$ and outputs the mode of $\\pi$, and $\\pi(a \\mid \\text{mode})$ is the predicted probability of action $a$. $y$ is information about the target distribution. We want the mode of $\\pi$ to correspond to areas where $y$ is maximized."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Is6D13WmZt_R",
        "colab_type": "text"
      },
      "source": [
        "## Candidate\n",
        "$$\n",
        "L(a, h_\\theta(s), y) = \\left\\lvert -\\lvert h_\\theta(s) - a\\rvert^p - y \\right\\rvert^{1/p}\n",
        "$$\n",
        "\n",
        "where $p$ is close to 0."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "W9Uaw7FTA92B",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import numpy as np\n",
        "import tensorflow.compat.v2 as tf\n",
        "import matplotlib.pyplot as plt"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Gel0tTnHBExg",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "tf.enable_v2_behavior()"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "590nNksQLGYY",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "n = 20\n",
        "lower, upper = -2, 2\n",
        "modes_x, modes_y = zip(*[  # (x, y)\n",
        "    (-1., -20),\n",
        "    (0.0, -20),\n",
        "    (1., -20),\n",
        "])\n",
        "\n",
        "x = np.concatenate((modes_x, np.random.uniform(lower, upper, size=n-len(modes_x))))\n",
        "y = np.random.uniform(-1000, -300, size=n)\n",
        "y[:len(modes_x)] = modes_y\n",
        "y /= np.max(np.abs(y))"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "YL40sNChBJPL",
        "colab_type": "code",
        "outputId": "a534abb7-e21c-42aa-8215-888a3e941210",
        "executionInfo": {
          "status": "ok",
          "timestamp": 1568767739291,
          "user_tz": 420,
          "elapsed": 585,
          "user": {
            "displayName": "Dan Abolafia",
            "photoUrl": "https://lh3.googleusercontent.com/a-/AAuE7mAQmxyT8biPkQeDgz5lf2ocSzJsOqH8BqBuLz1a=s64",
            "userId": "05741471333872541970"
          }
        },
        "colab": {
          "height": 269
        }
      },
      "source": [
        "plt.scatter(x, y)\n",
        "plt.show()"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n0qWM2no6AG6FVy8e82pdkndr82pdkndr82pdkndrs7kupoAAwFIEAABY6vYf/ehHP3K7iGxbtWqV\n2yWk5NW6JO/W5tW6JO/W5tW6JO/WZmtds+4cAAAgM0wBAYClZnwA7Ny5U4sXL1Ztba0eeughDQ8P\np2x3+PBhVVVVqbKyUpFIJOd1vf7666qurtZtt9120zP5ixYt0tKlS7V8+fK8PQEt09ryPWaXL19W\nKBSS3+9XKBTS0NBQynb5GrN0798Yo6eeekqVlZWqra3V6dOnc1bLdGt76623NHfuXC1fvlzLly/X\nj3/847zU9a1vfUslJSWqqalJ+bpbY5auLrfG6/z587r//vsVCARUXV2tvXv3JrXJ6ZiZGe7IkSNm\ndHTUGGPMM888Y5555pmkNtevXzcVFRXm/fffN//9739NbW2teffdd3NaV09Pj3nvvffM1772NfPX\nv/51ynZf/vKXzeDgYE5r+axManNjzHbu3Gl2795tjDFm9+7dKT9LY/IzZpm8/wMHDpgHHnjA3Lhx\nw5w4ccJ89atfzWlN06ntD3/4g3nwwQfzUs+n/fGPfzRvv/22qa6uTvm6W2OWri63xqu/v9+8/fbb\nxhhjrly5Yvx+f17/nc34I4ANGzaosPCTRxuvXbtWfX19SW1OnTqlyspKVVRUaM6cOdq2bZtisVhO\n6woEAqqq8uYjDzOpzY0xi8ViamlpkSS1tLSovb09p/3dTCbvPxaL6dFHH1VBQYHWrl2r4eFhJRIJ\nT9TmlnXr1umLX/zilK+7NWbp6nKLz+fTypUrJUl33nmnAoGA4vH4pDa5HLMZHwCf9pvf/EYbN25M\n2h6Px7Vw4cKJn8vLy5MG2S0FBQXasGGDVq1apWg06nY5E9wYs4sXL8rn80n65D/GwMBAynb5GLNM\n3r9b/64y7ffEiRNatmyZNm7cqHfffTfndWXCy/8X3R6vc+fOqbu7W2vWrJm0PZdjVpiVvyXH6uvr\ndeHChaTtu3btUnNz88TvCwsLtX379qR2JsVCp4KCgrzUlc7x48dVWlqqgYEBhUIhLV68WOvWrXO9\nNjfGLFO5GrNPy+T952qM0smk35UrV+rf//63vvCFL+jgwYPatGmTent7c15bOm6NWTpuj9eHH36o\nLVu26LnnntNdd9016bVcjtmMCIDOzs6bvt7W1qY333xTR48eTTkw5eXlOn/+/MTPfX19Ki0tzXld\nmRivo6SkRA899JBOnTqVlZ2Z09rcGLMFCxYokUjI5/MpkUiopKQkZbtcjdmnZfL+czVG2ajt0zuR\nxsZGPfHEE7p06ZLmzZuX8/puxq0xS8fN8RodHdWWLVu0fft2bd68Oen1XI7ZjJ8COnz4sH7605/q\njTfe0Oc+97mUbVavXq3e3l6dPXtW165d0759+9TU1JTnSpNdvXpVH3zwwcTvf//730+5SiHf3Biz\npqYmtbW1Sfok1FMdqeRrzDJ5/01NTXrllVdkjNHJkyc1d+7ciSmsXMqktgsXLkx8czx16pRu3Lih\nL33pSzmvLR23xiwdt8bLGKMdO3YoEAjo6aefTtkmp2OWtdPJLvnKV75iysvLzbJly8yyZcvMd77z\nHWOMMfF43GzcuHGi3YEDB4zf7zcVFRXmJz/5Sc7r2r9/vykrKzNz5swxJSUlZsOGDUl1vf/++6a2\nttbU1taaJUuW5KWuTGszJv9jdunSJbN+/XpTWVlp1q9fb/7zn/8k1ZXPMUv1/l966SXz0ksvGWOM\nuXHjhnniiSdMRUWFqampuelqr3zX9vzzz5slS5aY2tpas2bNGnP8+PG81LVt2zZz9913m8LCQlNW\nVmZ+/etfe2LM0tXl1nj9+c9/NpLM0qVLJ/ZhBw4cyNuYcSUwAFhqxk8BAQBuDQEAAJYiAADAUgQA\nAFiKAAAASxEAAGApAgAALEUAAICl/gd/d1CYAhnsGQAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 600x400 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "6telOnwE-DLY",
        "colab_type": "text"
      },
      "source": [
        "Generalize the loss above to\n",
        "$$\n",
        "L(a, h_\\theta(s), y) = \\left\\lvert -\\lvert h_\\theta(s) - a\\rvert^p - y \\right\\rvert^{q}\n",
        "$$\n",
        "\n",
        "where $q = 1/p$. Bringing $p$ arbitrarily close to 0 converges to the non-differentiable $L^0$ loss. Choosing $p=0.1$ seems to be small enough for practable purposes."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "kgBlN0u4BN4O",
        "colab_type": "code",
        "outputId": "1bae9bcb-0178-4787-b8db-5b264b1c68ab",
        "executionInfo": {
          "status": "ok",
          "timestamp": 1568767739936,
          "user_tz": 420,
          "elapsed": 633,
          "user": {
            "displayName": "Dan Abolafia",
            "photoUrl": "https://lh3.googleusercontent.com/a-/AAuE7mAQmxyT8biPkQeDgz5lf2ocSzJsOqH8BqBuLz1a=s64",
            "userId": "05741471333872541970"
          }
        },
        "colab": {
          "height": 269
        }
      },
      "source": [
        "# Mode\n",
        "\n",
        "p=0.1\n",
        "q=1/p\n",
        "t = np.linspace(-2,2,200).reshape(-1, 1)\n",
        "L = np.mean(np.power(np.abs(-np.power(np.abs(t - x[np.newaxis,:]), p) - y[np.newaxis,:]), q), axis=1)\n",
        "plt.plot(t, L)\n",
        "plt.show()"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAD8CAYAAAB3u9PLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3XtclHX+///HcBYVFQUEBkUYQASR\ncPB8Rjy2uGqZHXYpLfLQVh7y237202/dPtvGbp7TVDZryW212k2xUgPPhyzCRFMUBgQFRA6Cgkdg\nuH5/1LJLYgwKXAPzut9u3W7MNdc11/O60nn6Zq55XxpFURSEEEJYPCu1AwghhDAPUghCCCEAKQQh\nhBA/kkIQQggBSCEIIYT4kRSCEEIIQApBCCHEj6QQhBBCAFIIQgghfmSjdoDG6NatG97e3mrHEEKI\nViUnJ4eSkpIG12tVheDt7U1KSoraMYQQolXR6/UmrSe/MhJCCAFIIQghhPiRFIIQQghACkEIIcSP\nTCqE3bt3ExAQgE6nIzY29q7nP/zwQ0JCQggJCWHIkCGcPHmy9jlvb2/69u1LaGhonQ82SktLiYyM\nxM/Pj8jISMrKyprgcIQQQtyvBgvBaDQyf/58du3aRVpaGlu2bCEtLa3OOr169eLgwYOcOnWK1157\njZiYmDrP79+/n9TU1DpXCMXGxhIREYHBYCAiIqLeohFCCNFyGiyE5ORkdDodPj4+2NnZMXPmTBIS\nEuqsM2TIELp06QLAoEGDyMvLa3DHCQkJREdHAxAdHc327dvvJ78QQogm0mAh5Ofn4+XlVftYq9WS\nn59/z/U3bdrExIkTax9rNBrGjRtH//79iYuLq11eWFiIu7s7AO7u7hQVFd3XAZjiq6wS3jmQ2Wyv\nL4QQbUGDX0yr75bLGo2m3nX379/Ppk2bOHLkSO2yo0eP4uHhQVFREZGRkfTu3ZsRI0aYHDAuLq62\nSIqLi03e7r8dSC/m3cPnGdenOzrXDvf1GkII0dY1OELQarXk5ubWPs7Ly8PDw+Ou9U6dOsWzzz5L\nQkICXbt2rV3+73VdXV2ZOnUqycnJALi5uVFQUABAQUEBrq6u9e4/JiaGlJQUUlJScHFxacSh/cfz\nI3xwsLVmzV7DfW0vhBCWoMFCCA8Px2AwkJ2dTWVlJVu3biUqKqrOOhcvXmTatGls3rwZf3//2uU3\nbtygoqKi9ufExESCg4MBiIqKIj4+HoD4+HimTJnSZAf1U1072BM9xJvPTl0i/XJFs+1HCCGaw/U7\n1S2ynwYLwcbGhrVr1zJ+/HgCAwOZMWMGQUFBbNiwgQ0bNgDw+uuvc+XKFebNm1fn8tLCwkKGDRtG\nv379GDBgAJMnT2bChAkAvPrqqyQlJeHn50dSUhKvvvpqMx4mxAz3ob2dDav3ZjTrfoQQoikZCisY\n+MYe9p9rvs9Z/02j1PchgZnS6/UPNLndisR01uzLZOeLw+nj4dSEyYQQonnM+/A4B9OLOfz/xuDc\n3u6+XsPU906L+qby7OE+dHSwYeUeGSUIIczfmUvX2Pn9ZWYP63XfZdAYFlUIndrZ8txwH5LSCvk+\n75racYQQ4metTMrAycGG2cN9WmR/FlUIAM8M9aazoy0rktLVjiKEEPeUmnuVPWeLiBnhQ6d2ti2y\nT4srhI4OtsSM8GF/ejHfXZT5k4QQ5ml5YjpdHG15emivFtunxRUCQPRgb7q2t2NlknyWIIQwP8nZ\npRw2lDB3lC8d7FvuxpYWWQjt7W2YM9KXw4YSvs0pVTuOEELUUhSFZYnpuHS051eDvFt03xZZCABP\nDepJtw72rEiUUYIQwnwczbxCcnYp80f50s7OukX3bbGF0M7OmnmjfDl2/gpfZZWoHUcIIVAUheVJ\n6Xh0cuDxgT1afP8WWwgATwzsgZuTPSuTMuqdxE8IIVrS/vQiTly8ygtj/LC3adnRAVh4ITjYWvPC\naB3f5pRxJFNGCUII9SiKwvLEDHo4O/KoXqtKBosuBIAZ4V54dm7H8kQZJQgh1PPlmcucuVTOixF+\n2Fqr89Zs8YVgb2PNC2N0pOZe5UD6/d1vQQghHoSxRmFFUgY+Lu35ZejdtxdoKRZfCACP9Nfi5dyO\nFfJZghBCBZ+fukRG4XVeHuuPjUqjA5BCAMDW2ooXx/jxff41ktIK1Y4jhLAg1cYaVu8xEODWkYf7\nuquaRQrhR1Mf8qRXt/as3GOgpkZGCUKIlrHtRD7nS26wINIfK6v6b0/cUqQQfmRjbcVLEX6cLShn\n95nLascRQliAyuoa1uwzEOzpxPggN7XjSCH8t1/088DXpT0rkzIwyihBCNHMPjmeS27pLRZFBqDR\nqDs6ACmEOqytNLw81h9D0XW++L5A7ThCiDbsdpWRt/dmEtajM6MCXNSOA0gh3GVyX3cC3Dqyak8G\n1cYateMIIdqoLckXuVx+m0XjzGN0AFIId7Gy0rAg0o/zxTfYcfKS2nGEEG3QrUoj6/ZnMcjHmSG+\nXdWOU0sKoR7jg7oT5OHE6r0GqmSUIIRoYh8cy6Hk+h2zGh2AiYWwe/duAgIC0Ol0xMbG3vX8hx9+\nSEhICCEhIQwZMoSTJ08CkJuby+jRowkMDCQoKIjVq1fXbrN06VI8PT0JDQ0lNDSUnTt3NtEhPTiN\nRsOCsf5cuHKTbd/lqx1HCNGGXL9TzYaDWYzwdyHc21ntOHU0eCseo9HI/PnzSUpKQqvVEh4eTlRU\nFH369Kldp1evXhw8eJAuXbqwa9cuYmJi+Oabb7CxsWH58uWEhYVRUVFB//79iYyMrN12wYIFLF68\nuPmO7gFEBLrST9uJNfsM/PIhT+xsZDAlhHhw7x/JpuxmFYsi/dWOcpcG3+WSk5PR6XT4+PhgZ2fH\nzJkzSUhIqLPOkCFD6NKlCwCDBg0iLy8PAHd3d8LCwgDo2LEjgYGB5Oe3jn9xazQaFkT6k1d2i0+O\n56odRwjRBly7WUXc4fOMDXSjn1dntePcpcFCyM/Px8vLq/axVqv92Tf1TZs2MXHixLuW5+TkcOLE\nCQYOHFi7bO3atYSEhDBr1izKyszvhvcj/V0I69GZtfsyuVNtVDuOEKKVe/fIeSpuV7PQDEcHYEIh\n1DfZ270+BNm/fz+bNm3iz3/+c53l169fZ/r06axatQonJycA5s6dS1ZWFqmpqbi7u7No0aJ6XzMu\nLg69Xo9er6e4uGVnI9VoNCwaF0DBtdtsTZZRghDi/pXeqOS9I9lM7utOHw8ntePUq8FC0Gq15Ob+\n580wLy8PD4+7p2c9deoUzz77LAkJCXTt+p/LqKqqqpg+fTpPPvkk06ZNq13u5uaGtbU1VlZWPPfc\ncyQnJ9e7/5iYGFJSUkhJScHFpeW/vDHEtysDejmzbn8mt6tklCCEuD8bD2Zxq8rIgkg/taPcU4OF\nEB4ejsFgIDs7m8rKSrZu3UpUVFSddS5evMi0adPYvHkz/v7/GQopisLs2bMJDAxk4cKFdbYpKPjP\nN4G3bdtGcHDwgx5Ls9BoNCyM9Keo4g4ffnNR7ThCiFaoqPw28cdymBLqic61o9px7qnBq4xsbGxY\nu3Yt48ePx2g0MmvWLIKCgtiwYQMAc+bM4fXXX+fKlSvMmzevdpuUlBSOHj3K5s2b6du3L6GhoQD8\n6U9/YtKkSSxZsoTU1FQ0Gg3e3t5s3LixGQ/zwQzy6cpQXVfWH8jk8QFeONo1eNqEEKLWOweyqDIq\nvBRhvqMDAI3Siu4Io9frSUlJUWXfxy+UMn39MX47sTfPj/RVJYMQovW5dPUWo946wNSHPPnzIyGq\nZDD1vVMurjdR/57OjPR3YcPBLK7fqVY7jhCilXh7XyYKCr+J0KkdpUFSCI2wINKfsptVxH+Vo3YU\nIUQrcPHKTT5JyWVmeA+0XRzVjtMgKYRGCPXqTERvV+IOnaf8dpXacYQQZm71XgPWVhpeGGP+owOQ\nQmi0BZH+XLtVxXtHstWOIoQwY1nF19l2Io+nBvXEzclB7TgmkUJopGDPTowPcmPT4Wyu3ZRRghCi\nfqv2GLC3sWbuqNZzEYoUwn1YEOlPxZ1q/nr4vNpRhBBm6Nzlcj4/dYmnh3rTrYO92nFMJoVwH3p3\nd2JyiDvvH82m9Eal2nGEEGZmZVIGHexseH6Ej9pRGkUK4T69HOHHzSojcYdklCCE+I/v867x5ZlC\nZg3rRWdHO7XjNIoUwn3yc+vIlH4exH+VQ3HFHbXjCCHMxLLEdDo72jJ7eC+1ozSaFMIDeDHCjzvV\nRjYezFI7ihDCDHybU8rBjGKeH+GLk4Ot2nEaTQrhAfi4dGBamJbNX1+gsPy22nGEECpSFIVlX6bT\nrYM90UN6qh3nvkghPKAXx/hRXaOw/oCMEoSwZEcyS/gmu5QXRvu22gkwpRAeUI+ujjzaX8s/vrlI\nwbVbascRQqhAURSWJWbg0cmBxwf2UDvOfZNCaAIvjNGhoLB2X6baUYQQKthztoiTuVd5McIPextr\ntePcNymEJqDt4shj4V58nJJLbulNteMIIVpQTY3C8sR0vLs6Mr2/Vu04D0QKoYnMH61Do9HIKEEI\nC/PF9wWcu1zBy2P9sbVu3W+prTu9GXHv1I4nBvTgn9/lceHKDbXjCCFaQLWxhpVJGfi7deAX/e6+\n13xrI4XQhOaN8sXGSsOavTJKEMISfHoin/MlN1gYGYC1lUbtOA9MCqEJuTo58OvBPdl2Io+s4utq\nxxFCNKPK6hpW7zHQ98cZkNsCKYQm9vxIX+xtrFmz16B2FCFEM/ro24vkX73FonH+aDStf3QAJhbC\n7t27CQgIQKfTERsbe9fzH374ISEhIYSEhDBkyBBOnjzZ4LalpaVERkbi5+dHZGQkZWVlTXA46vvh\nW4re7Dh5iYzCCrXjCCGawa1KI2/vyyTcuwsj/V3UjtNkGiwEo9HI/Pnz2bVrF2lpaWzZsoW0tLQ6\n6/Tq1YuDBw9y6tQpXnvtNWJiYhrcNjY2loiICAwGAxEREfUWTWv1/AgfHG2tWb1HRglCtEV///oC\nRRV3WDwuoM2MDsCEQkhOTkan0+Hj44OdnR0zZ84kISGhzjpDhgyhS5cuAAwaNIi8vLwGt01ISCA6\nOhqA6Ohotm/f3qQHpqYu7e2YNawXX3xfwNmCcrXjCCGa0PU71aw/mMVwv24M9Omqdpwm1WAh5Ofn\n4+XlVftYq9WSn59/z/U3bdrExIkTG9y2sLAQd3d3ANzd3SkqKrq/IzBTzw7zoaODDSuTMtSOIoRo\nQu8d+eHGWIvGBagdpck1OAOToih3LbvXEGn//v1s2rSJI0eONHrbe4mLiyMuLg6A4uLiRm2rpk6O\ntjw7zIeVezL4Pu8afbWd1I4khHhAV29W8tdD54ns40aoV2e14zS5BkcIWq2W3Nzc2sd5eXl4eNz9\nBYxTp07x7LPPkpCQQNeuXRvc1s3NjYKCAgAKCgpwdXWtd/8xMTGkpKSQkpKCi0vr+vDmmWHedGpn\ny8o9MkoQoi2IO3Se65XVLIz0VztKs2iwEMLDwzEYDGRnZ1NZWcnWrVuJioqqs87FixeZNm0amzdv\nxt/f36Rto6KiiI+PByA+Pp4pU6Y05XGZBScHW54f6cO+c0Ucv9A2rqISwlIVV9zh/aM5PBziQaC7\nk9pxmkWDhWBjY8PatWsZP348gYGBzJgxg6CgIDZs2MCGDRsAeP3117ly5Qrz5s0jNDQUvV7/s9sC\nvPrqqyQlJeHn50dSUhKvvvpqMx6mep4e4k23DnbyWYIQrdw7BzK5U21kwVg/taM0G41S3y/6zZRe\nryclJUXtGI327uHz/PGLs2x5bhCDfdvWVQlCWIJLV28x6q0DTAn14K1H+6kdp9FMfe+Ubyq3gKcG\n9cTNyZ4VSen1ftAuhDBvb+/LREHhxYi2OzoAKYQW4WBrzQujdXybU8ZhQ4nacYQQjXDhyg0+Scnl\n8QE98HJ2VDtOs5JCaCEzwr3w7NyO5YkyShCiNVm9x4C1lYb5o3VqR2l2UggtxN7Gmpci/DiZd409\nZ9vWl/CEaKsMhRVsS80neog3bk4OasdpdlIILWhamCfeXR1ZkZRBTY2MEoQwdyuSMnC0tWbOSF+1\no7QIKYQWZGNtxctj/TlbUM6u05fVjiOE+Bmn86+x6/RlZg/rhXN7O7XjtAgphBb2i34e+Ll2YOWe\nDIwyShDCbC1PTKdTO1ueHeGjdpQWI4XQwqytNCyI9Cez6Do7Tt57kkAhhHqOXyhlf3oxz4/0wcnB\nVu04LUYKQQUTgrrTx92JVXsMVBlr1I4jhPiJZV9m0K2DHU8P8VY7SouSQlCBlZWGReP8uXDlJp9+\nl6d2HCHEfzmaWcKx81eYN0qHo12DE0K3KVIIKhnT25VQr86s2fvD/ChCCPUpisJbX6bj3smBJwb2\nUDtOi5NCUIlG88MoIf/qLT76NrfhDYQQzW7fuSJSc6/ymzF+ONhaqx2nxUkhqGiYrhsDvJ1Zuy+T\n21UyShBCTTU1CssSM+jZ1ZFH9Vq146hCCkFF/x4lFFXc4e9fX1A7jhAWbefpH+6B/vJYP2ytLfOt\n0TKP2owM9OnKcL9uvHMgixt3qtWOI4RFqjbWsCIpAz/XDkT181Q7jmqkEMzAwkh/Sm9U8revctSO\nIoRF2p56ifPFN1gY6Y+1VePu+96WSCGYgYd6dCGitysbD2Zx7VaV2nGEsCiV1TWs2pNBsKcTE4K7\nqx1HVVIIZmJBpD/lt6vZdCRb7ShCWJSPU3LJK7vFonEBaDSWOzoAKQSzEezZiYnB3XnvSDZlNyrV\njiOERbhdZeTtfQb69+zCKH8XteOoTgrBjCyI9OdGZTUbD51XO4oQFuHvX1+gsPwOi2V0AEghmBV/\nt45M6edB/Fc5FFfcUTuOEG3a9TvVvHMgi2G6bgz27ap2HLNgUiHs3r2bgIAAdDodsbGxdz1/7tw5\nBg8ejL29PcuWLatdnp6eTmhoaO1/Tk5OrFq1CoClS5fi6elZ+9zOnTub6JBat5fG+lNprGH9gSy1\nowjRpv3taDalNypZNM5f7Shmo8GZm4xGI/PnzycpKQmtVkt4eDhRUVH06dOndh1nZ2fWrFnD9u3b\n62wbEBBAampq7et4enoyderU2ucXLFjA4sWLm+pY2oRe3dozPcyTv39zgedG9MK9Uzu1IwnR5ly7\nWcXGQ+cZG+jKQz26qB3HbDQ4QkhOTkan0+Hj44OdnR0zZ84kISGhzjqurq6Eh4dja3vvecP37t2L\nr68vPXv2fPDUbdxvxvihKArr9meqHUWINinucBYVt6tZGBmgdhSz0mAh5Ofn4+XlVftYq9WSn9/4\nG7ts3bqVxx9/vM6ytWvXEhISwqxZsygrK2v0a7ZVXs6OPBbuxUff5pJbelPtOEK0KSXX7/D+0Rwm\nh7jTx8NJ7ThmpcFCUJS7b/PY2E/jKysr2bFjB48++mjtsrlz55KVlUVqairu7u4sWrSo3m3j4uLQ\n6/Xo9XqKi4sbtd/W7IXRfmg0GtbsNagdRYg2Zf2BLG5XGVkwVj47+KkGC0Gr1ZKb+5/pmfPy8vDw\n8GjUTnbt2kVYWBhubm61y9zc3LC2tsbKyornnnuO5OTkereNiYkhJSWFlJQUXFws5zrh7p0ceGpg\nTz49kc/54utqxxGiTbh09Rabv77AtDAtOtcOascxOw0WQnh4OAaDgezsbCorK9m6dStRUVGN2smW\nLVvu+nVRQUFB7c/btm0jODi4Ua9pCeaO8sXO2orVMkoQokm8vc+Aoii8PNZP7ShmqcGrjGxsbFi7\ndi3jx4/HaDQya9YsgoKC2LBhAwBz5szh8uXL6PV6ysvLsbKyYtWqVaSlpeHk5MTNmzdJSkpi48aN\ndV53yZIlpKamotFo8Pb2vut5AS4d7Xl6qDcbDmYxf7QOf7eOakcSotXKLrnBxyl5/GpQT7RdHNWO\nY5Y0Sn0fEpgpvV5PSkqK2jFaVNmNSob/ZT/D/bqx/qn+ascRotV6ccsJktIKObhkFK4dHdSO06JM\nfe+UbyqbuS7t7Zg9rBe7Tl/mdP41teMI0SqlXSpnx8lLPDPU2+LKoDGkEFqB2cN70amdLSuTMtSO\nIkSrtCIpnY4ONjw/wlftKGZNCqEVcHKwJWaED3vPFfHdRfm+hhCNcfxCGXvOFjFnpC+dHO/95Vkh\nhdBqPD3Em67t7ViRKKMEIUylKApvfXmObh3seHqIt9pxzJ4UQivR3t6GuaN8OZJZwtfnr6gdR4hW\n4WjmFb4+X8r80Tra2zd4UaXFk0JoRZ4a1BPXjvasSMyo9xvkQoj/+PfowKOTA08M7KF2nFZBCqEV\ncbC15jdjdCTnlHLYUKJ2HCHMWmJaISfzrvHyWH/sbazVjtMqSCG0MjPCvfDs3I7lSTJKEOJejDUK\nyxPT8XFpz7QwT7XjtBpSCK2MvY01L0boOJl7lb1ni9SOI4RZSkjNJ6PwOosiA7Cxlrc5U8mZaoWm\nhWnx7urIiqQMampklCDEf6usrmHlngyCPJyYGNxd7TitihRCK2RrbcVLY/1IKyhn95nLascRwqx8\nlJJLbuktFo8PwMqqcVP1WzophFYqqp8nOtcOrEjKwCijBCEAuFVp5O29BsK9uzDK33Kmy28qUgit\nlLWVhoWR/mQWXeezk5fUjiOEWfjgWA5FFXd4ZXzvRt/IS0ghtGoTgroT6O7Eyj0ZVBlr1I4jhKrK\nb1ex/mAWI/1dGNDLWe04rZIUQitmZaVhUaQ/F67c5F/H89SOI4Sq3j2czdWbVSweF6B2lFZLCqGV\niwh0JdSrM6v3GrhdZVQ7jhCquHL9DpsOn2dS3+701XZSO06rJYXQymk0GpaMD6Dg2m3+8c1FteMI\noYr1B7K4VWVkYaS/2lFaNSmENmCIrhtDfLvyzoFMbtypVjuOEC2q4NotPvj6AtPCtOhc5TazD0IK\noY1YPD6AkuuV/O2rHLWjCNGi1uzNRFEUXorwUztKqyeF0EaE9ehCRG9XNh7M4tqtKrXjCNEickpu\n8HFKLk8M6IGXs6PacVo9KYQ2ZNG4AMpvV/PXQ+fVjiJEi1i5JwM7ayvmj9GpHaVNMKkQdu/eTUBA\nADqdjtjY2LueP3fuHIMHD8be3p5ly5bVec7b25u+ffsSGhqKXq+vXV5aWkpkZCR+fn5ERkZSVia3\nhnxQfTyceDjEnfeOZlNy/Y7acYRoVmcLytlx8hLPDPXGtaOD2nHahAYLwWg0Mn/+fHbt2kVaWhpb\ntmwhLS2tzjrOzs6sWbOGxYsX1/sa+/fvJzU1lZSUlNplsbGxREREYDAYiIiIqLdoROMtiPTndpWR\nd/ZnqR1FiGa1PDGDDvY2PD/CV+0obUaDhZCcnIxOp8PHxwc7OztmzpxJQkJCnXVcXV0JDw/H1tb0\nG1gnJCQQHR0NQHR0NNu3b29kdFEfX5cOPNJfy9+/uUDBtVtqxxGiWXx3sYw9ZwuZM9KXTo6mv++I\nn9dgIeTn5+Pl5VX7WKvVkp+fb/IONBoN48aNo3///sTFxdUuLywsxN3dHQB3d3eKiuqf2z8uLg69\nXo9er6e4uNjk/VqyFyP8UBSFNXsz1Y4iRLNY9mU63TrY8fQQb7WjtCkNFkJ9d+VqzKRRR48e5bvv\nvmPXrl2sW7eOQ4cONSpgTEwMKSkppKSk4OIisxeaQtvFkScG9ODjlFxySm6oHUeIJnXEUMJXWVeY\nP1pHe3sbteO0KQ0WglarJTc3t/ZxXl4eHh4eJu/g3+u6uroydepUkpOTAXBzc6OgoACAgoICXF1d\nGxVc/Lz5Y3TYWmtYtSdD7ShCNBlFUXjry3N4dHLgiYE91I7T5jRYCOHh4RgMBrKzs6msrGTr1q1E\nRUWZ9OI3btygoqKi9ufExESCg4MBiIqKIj4+HoD4+HimTJlyv8cg6uHa0YGnh/Qi4eQl0i9XqB1H\niCaRmFbIybxrvDzWH3sba7XjtDkNjrdsbGxYu3Yt48ePx2g0MmvWLIKCgtiwYQMAc+bM4fLly+j1\nesrLy7GysmLVqlWkpaVRUlLC1KlTAaiuruaJJ55gwoQJALz66qvMmDGDTZs20aNHDz755JNmPEzL\nNGekDx9+fYHlienE/Vrf8AZCmDFjjcLyxHR8urVnWpin2nHaJI1S34cEZkqv19e5dFU0bPUeAyv3\nZJAwfyj9vDqrHUeI+7btRB4LPjrJ2ice4uEQ039tLUx/75RvKrdxs4Z508XRlmWJ6WpHEeK+VVbX\nsDLJQB93JyYFu6sdp82SQmjjOjrYMm+UjsOGEr4+f0XtOELcl49TcrlYepNXxgdgZSW3xmwuUggW\n4FeDe+LmZM+yL9PrvYxYCHN2u8rImr0Gwr27MCpALj1vTlIIFsDB1poXxviRcqGMAxny5T7RusR/\nlUNRxR1eGd+7Ud+BEo0nhWAhHtN74eXcjmVfplNTI6ME0Tpcu1XFOweyGOnvwoBezmrHafOkECyE\nnY0VL0f4c+ZSObvPXFY7jhAm+euh81y7VcWSCQFqR7EIUggW5JcPeaJz7cCKpAyMMkoQZq6o4jab\njmQT1c+DII9OasexCFIIFsTaSsPCSH8yi66z/YTpExQKoYa1+zKpMtawMNJf7SgWQwrBwkwI6k6w\npxOr9mZQWV2jdhwh6nXxyk3+8c1FZg7wwrtbe7XjWAwpBAtjZaVh0bgAcktv8VFKbsMbCKGCFUnp\n2FhreHGMn9pRLIoUggUa5e+CvmcX1u4zcLvKqHYcIepIu1ROwslLzBraC1cnuTVmS5JCsEAajYbF\n4wMoLL/D5mMX1I4jRB3LEtNxcrDl+ZFya8yWJoVgoQb5dGW4XzfeOZBJxe0qteMIAUBydin7zhUx\nd5QvndrJrTFbmhSCBVs8LoCym1W8dyRH7ShCoCgKf9l9Djcne6IHe6sdxyJJIViwfl6dGdfHjXcP\nn+fqzUq14wgLt+9cESkXyngpwp92dnLzGzVIIVi4ReMCuF5ZzfqDWWpHERbMWKPwl93p9OrWnkf1\nWrXjWCwpBAsX0L0jU/p5/DCBWPltteMIC7XjZD7phRUsGuePrbW8LalFzrxgQaQ/1UaFNfsMakcR\nFqiyuobliRkEe8rNb9QmhSDo2bU9Mwd4sTU5lwtXbqgdR1iYLckXySu7xZLxveXmNyqTQhAAvDjG\nDxtrDSuSMtSOIizIjTvVvL3omcFVAAAXL0lEQVTPwOAfL4MW6jKpEHbv3k1AQAA6nY7Y2Ni7nj93\n7hyDBw/G3t6eZcuW1S7Pzc1l9OjRBAYGEhQUxOrVq2ufW7p0KZ6enoSGhhIaGsrOnTub4HDE/XJ1\ncuDpIb3YcfISZwvK1Y4jLMR7R7IpuV7JkgkBcvMbM9BgIRiNRubPn8+uXbtIS0tjy5YtpKWl1VnH\n2dmZNWvWsHjx4jrLbWxsWL58OWfPnuXrr79m3bp1dbZdsGABqamppKamMmnSpCY6JHG/5o70pYO9\nDX/ZfU7tKMIClN6oJO7QecYHufFQjy5qxxGYUAjJycnodDp8fHyws7Nj5syZJCQk1FnH1dWV8PBw\nbG3rfrPQ3d2dsLAwADp27EhgYCD5+TLtsrnq5GjLb8bo2J9ezO7TchMd0bzWH8jkRmU1i8fJzW/M\nRYOFkJ+fj5eXV+1jrVZ7X2/qOTk5nDhxgoEDB9YuW7t2LSEhIcyaNYuysrJGv6Zoes8M7UXv7h35\n/Y7TXLslU1qI5pFbepP4YxeYHqbFz62j2nHEjxosBEW5+85ajf1d3/Xr15k+fTqrVq3CyckJgLlz\n55KVlUVqairu7u4sWrSo3m3j4uLQ6/Xo9XqKi+UG8c3N1tqK2OkhlFyvZOq6o5zOv6Z2JNHGKIrC\n/2z7HlsrDQvHyc1vzEmDhaDVasnN/c+8+Xl5eXh4eJi8g6qqKqZPn86TTz7JtGnTape7ublhbW2N\nlZUVzz33HMnJyfVuHxMTQ0pKCikpKbi4uJi8X3H/Qr06s3n2AG5WGpn6zlH+eug8NXLLTdFEtn6b\ny2FDCUsm9Ma9Uzu144j/0mAhhIeHYzAYyM7OprKykq1btxIVFWXSiyuKwuzZswkMDGThwoV1niso\nKKj9edu2bQQHBzcyumhOQ3y7seul4YwOcOWNnWeJfj9ZvsksHsjtKiO/TzjNbz/9noG9nHlqUE+1\nI4mf0Cj1/U7oJ3bu3MnLL7+M0Whk1qxZ/O53v2PDhg0AzJkzh8uXL6PX6ykvL8fKyooOHTqQlpbG\nqVOnGD58OH379sXK6ofu+dOf/sSkSZP41a9+RWpqKhqNBm9vbzZu3Ii7+89/S1Gv15OSktIEhy1M\npSgKW5Jzef3zMzja2fDWIyFEBLqpHUu0MiculrHok5OcL77B7GG9WDIhAHsbmcCupZj63mlSIZgL\nKQT1ZBZV8JstqZwtKOdXg3ry20m9cbSzUTuWMHOV1TWs3pvB+gNZdHdy4K1H+zFUJ19Aa2mmvnfK\n32hhEp1rR7bPH8Jbu9N590g2RzJLWDGjn1w/Lu4p7VI5Cz9O5dzlCh7tr+W1X/TByUFuemPOZOoK\nYTJ7G2v+9+E+/OO5gVRW1/DIhmOsSEynylijdjRhRqqNNazbn8mUdUcouV7Ju7/W89aj/aQMWgEZ\nIYhGG+LbjV0vD+cPO9JYsy+T/enFrHysHzpXuZ7c0mUWXWfRJyc5mXuVySHu/HFKMF3a26kdS5hI\nRgjivjg52LJ8Rj82PBVGXtlNJq85wntHsuXyVAtVU6Ow6Ug2k9cc5sKVG7z9+EOseyJMyqCVkRGC\neCATgt0J69mF3/7re17/PI295wp565F+eHSW68stRXbJDZb88yTf5pQR0duVN6f1xdXJQe1Y4j7I\nCEE8MNeODrwbrSd2Wl9OXLzK+FWH2HYir95vuYu2w1ij8NdD55mw6hDplyt465EQ3o3WSxm0YjJC\nEE1Co9Ewc0APBvt2ZdHHJ1nw0UmS0gp545d95dcGbZChsIJX/nmK1NyrjA10442pwbhJEbR6Ugii\nSfXs2p6Pnh9M3KHzrEhK59ucMv4yPYTRvV3VjiaaQJWxhrhD51m9x0B7e2tWzwwlqp+H3MugjZBf\nGYkmZ22lYe4oXxLmD6Nrezue+du3LPnnScpvy+yprVnapXJ+ue4ob32ZTmQfN5IWjmRKqKeUQRsi\nIwTRbPp4OJHwwlDW7DWw/kAWhw0l/Hl6CCP8ZZLC1qSyuoa1+zN5Z38mnR3tWP9kGBP7/vw0M6J1\nkhGCaFb2Nta8Mr43n84bSnt7G379XjL/s+17rt+pVjuaMMHJ3Kv84u0jrNlrIKqfB0kLRkgZtGEy\nQhAtItSrM5//ZhgrkzKIO3yeg+nFvPVICENkXhuzdLvKyKo9BuIOZeHS0Z5N0XqZ1NACyAhBtBgH\nW2t+OymQf84ZjJ2NFU+8+w3/X8Jpbshowawcv1DKpDWH2XAwixl6LxIXjJQysBAyQhAtrn9PZ3a+\nOJxliem8dzSbAz+OFgb6dFU7mkW7WVnNW1+m87evcvDo1I7Nswcw3E8+77EkMkIQqmhnZ81rD/fh\no5jBaDQw869f84fPznCr0qh2NIt0xFDChFWHef9oDr8a1JMvF4yQMrBAMkIQqhrQy5ldLw3nz7vO\n8f7RnNrRgt7bWe1oFqHsRiV//OIs//ouD59u7fkoZpCM1CyYjBCE6hztbPjDlGD+8dxAqow1PLrx\nGG98kcbtKhktNBdFUdhx8hJjVxwkITWfF0br2PnScCkDCycjBGE2hvh2Y/fLI3hz51n+ejibveeK\nWP6o3ISnqeVfvcVr20+z71wR/bSd+PuzAwl0d1I7ljADMkIQZqWDvQ1vTO3L5tkDuF1pZPr6r3hz\n51kZLTQBY41C/Fc5jFtxkGNZV3jt4T58Om+olIGoJSMEYZaG+7nw5YIRvLnrHBsPnScxrZC/PBJC\nuHy2cF8yCit49V+n+O7iVUb4u/DGL4PxcnZUO5YwMzJCEGaro4Mtf5ralw+fHUh1TQ0zNh5j6Y4z\n8r2FRrhTbWRFUgaT1xwmu+QGKx/rR/wz4VIGol4mFcLu3bsJCAhAp9MRGxt71/Pnzp1j8ODB2Nvb\ns2zZMpO2LS0tJTIyEj8/PyIjIykrK3vAQxFt1VBdN3a/NILowd7EH8th/KpDHDGUqB3L7KXklDJ5\nzQ/TTjwc4sGehSOZ+pBWJqMT99RgIRiNRubPn8+uXbtIS0tjy5YtpKWl1VnH2dmZNWvWsHjxYpO3\njY2NJSIiAoPBQERERL1FI8S/tbe3YWlUEB8/Pxg7ayue2vQNr/7rlMygWo+K21W8tv00j2w4xq1K\nI397JpyVj4XStYO92tGEmWuwEJKTk9HpdPj4+GBnZ8fMmTNJSEios46rqyvh4eHY2tqavG1CQgLR\n0dEAREdHs3379qY6JtGGhXs7s/Ol4Tw/0oePU3IZt+IQ+84Vqh3LbOxJKyRyxSH+/s0FnhnqTeKC\nEYwKkHtRCNM0WAj5+fl4eXnVPtZqteTn55v04j+3bWFhIe7uP8ya6O7uTlFRUb2vERcXh16vR6/X\nU1xcbNJ+RdvmYGvNbycGsm3eUJza2TDrbyks+CiVshuVakdTzeVrt5mz+TjPfpBCp3a2fDp3CL//\nRRDt7eW6EWG6Bv+01HdfXFN/B/kg2/5bTEwMMTExAOj1+kZtK9q2fl6d+ew3w1i3P4t39mdy2FDM\n/00JtqjpmY01Ch8cy2F5YgZVxhpeGR/Ac8N9sLOR60VE4zX4p0ar1ZKbm1v7OC8vDw8PD5Ne/Oe2\ndXNzo6CgAICCggJcXWVYKxrP3saahZH+7HhhGN07OTD3w++Y9+FxiivuqB2t2Z3Ov8bUd47yh8/S\nCOvZhaQFI5k/WidlIO5bg39ywsPDMRgMZGdnU1lZydatW4mKijLpxX9u26ioKOLj4wGIj49nypQp\nD3AYwtL18XBi+7yhLJkQwJ60IiJXHmT7ifx6R6mt3Y071fzf52lErT3Cpau3WfP4Q8Q/E06PrnIp\nqXgwGsWEvzE7d+7k5Zdfxmg0MmvWLH73u9+xYcMGAObMmcPly5fR6/WUl5djZWVFhw4dSEtLw8nJ\nqd5tAa5cucKMGTO4ePEiPXr04JNPPsHZ+ee/dKTX60lJSWmCwxZtWWZRBa/88xQnLl5ldIALf5za\nF8/O7dSO1SQSz1zm9zvOUHDtNk8O7MGSCb3p1M624Q2FRTP1vdOkQjAXUgjCVP+epmFZYjoAr4wP\n4NeDvbG2ap3X4F+6eoulO86QmFZI7+4deWNqX/r3lDmehGlMfe+USxBEm2RtpWHWsF6MC3Ljf7ef\n5g+fpZGQeonY6X3p3b31zN1Tbawh/tgFViSmY1QUXp3Ym9nDemFrLZ8TiKYnhSDaNG0XR95/Opwd\nJy/xh8/SeHjNEeaO8mX+aB0OttZqx/tZp/Ku8j/bvud0fjmjAlz4vyky/5BoXlIIos3TaDRMCfVk\nuJ8Lf/wijbf3ZfLF9wW8ObWvWc7/X3G7iuWJGXxwLIeuHexZ90QYk/p2lyknRLOTcaewGM7t7Vgx\nI5QPZg2gsrqGx+K+5n+2fW82018oisLO7wuIXHGI+GM5PDWoJ3sXjWRyiLuUgWgRMkIQFmeEvwuJ\nC0awMimDTUey2ZNWyOtTgpkQ3F21TOeLr/P7HWc4bCgh0N2J9U+FyY2BRIuTQhAWydHOht9N7sMv\n+nnw//71PXP+fpwJQd35w5Qg3JwcWizHrUoj6/ZnEnfoPPY2Vvz+F3341aCe2MiHxkIFUgjCooVo\nO7PjhaG8ezibVXsyOLqihFcn9ubx8B5YNfMlqnvSCln62Rnyym4x9SFPfjupN64dW66MhPgpKQRh\n8WytrZg7ypeJwd357aff87ttp/nX8TzemNq3WW4vmVt6kz98doY9Z4vwd+vA1phBDDLDD7eF5ZFC\nEOJH3t3a84/nBvKv7/L5086zPPz2EWYP68VLEX5NMmvonWojcQfPs3Z/JtZWGv5nUm+eGSrfKRDm\nQwpBiP+i0Wh4pL+WiN6u/OXLc8QdOs/nJy+xNCqIcUH3/6HzwYxifp9wmpwrN5kc4s7/Tg7EvVPb\nmE5DtB3yTxMh6tGlvR1vTgvhn3MG49TOlpjNx3k2/lvyym426nUuXb3F3L8fJ/q9ZKw0GjbPHsC6\nJ8KkDIRZkhGCED9D7+3MZ78ZxvtHs1mZZCByxSFeGuvX4PQRtyqNxB06z/qDmcAPcyk9O7wX9jbm\n/e1oYdmkEIRogK21FTEjfJkc4sHSHWeI3XWObd/l88epwYR7152hV1GUH74FvfMc+VdvMTnEnd9O\n7I22i0w5IcyfFIIQJvLs3I6//lpPUlohS3ec4dENx5ih17JkQm+6dbDnzKVr/OGzNJKzSwl0d2LF\njH5mOTWGEPcihSBEI0X2cWOoriur9xrYdDibL04V4NbJgeySG3RxtONPU/vyWLhXq51qW1guKQQh\n7oOjnQ2/nRjIo/292HQkm/LbVUwI6s7zI3zp5Cg3rBGtkxSCEA9A59qBN6f1VTuGEE1CLjsVQggB\nSCEIIYT4kRSCEEIIwMRC2L17NwEBAeh0OmJjY+96XlEUXnzxRXQ6HSEhIXz33XcApKenExoaWvuf\nk5MTq1atAmDp0qV4enrWPrdz584mPCwhhBCN1eCHykajkfnz55OUlIRWqyU8PJyoqCj69OlTu86u\nXbswGAwYDAa++eYb5s6dyzfffENAQACpqam1r+Pp6cnUqVNrt1uwYAGLFy9uhsMSQgjRWA2OEJKT\nk9HpdPj4+GBnZ8fMmTNJSEios05CQgK//vWv0Wg0DBo0iKtXr1JQUFBnnb179+Lr60vPnj2b9giE\nEEI0iQYLIT8/Hy8vr9rHWq2W/Pz8Rq+zdetWHn/88TrL1q5dS0hICLNmzaKsrOy+DkAIIUTTaLAQ\nFEW5a9lPb/jd0DqVlZXs2LGDRx99tHbZ3LlzycrKIjU1FXd3dxYtWlTv/uPi4tDr9ej1eoqLixuK\nK4QQ4j41+BmCVqslNze39nFeXh4eHh6NWmfXrl2EhYXh5uZWu+y/f37uued4+OGH691/TEwMMTEx\nAHTr1g29Xt9Q5HoVFxfj4uJyX9s2J8nVOJKrcSRX45hrLniwbDk5OaatqDSgqqpK6dWrl3L+/Hnl\nzp07SkhIiHL69Ok663z++efKhAkTlJqaGuXYsWNKeHh4necfe+wx5b333quz7NKlS7U/r1ixQnns\nsccaivJA+vfv36yvf78kV+NIrsaRXI1jrrkUpWWyNThCsLGxYe3atYwfPx6j0cisWbMICgpiw4YN\nAMyZM4dJkyaxc+dOdDodjo6OvP/++7Xb37x5k6SkJDZu3FjndZcsWUJqaioajQZvb++7nhdCCNGy\nTJrLaNKkSUyaNKnOsjlz5tT+rNFoWLduXb3bOjo6cuXKlbuWb968uTE5hRBCNDPrpUuXLlU7REvp\n37+/2hHqJbkaR3I1juRqHHPNBc2fTaMo9VwiJIQQwuLIXEZCCCGANlwIr7zyCr179yYkJISpU6dy\n9erVetdraJ6mpvbJJ58QFBSElZUVKSkp91zP29ubvn37Ehoaet+X2jZHrpY+X6WlpURGRuLn50dk\nZOQ9v8DYUufrfuf1am4N5Tpw4ACdOnWqnTvs9ddfb5Fcs2bNwtXVleDg4HqfV+t8NZRLjfOVm5vL\n6NGjCQwMJCgoiNWrV9+1TrOfr2a/jkklX375pVJVVaUoiqIsWbJEWbJkyV3rVFdXKz4+PkpWVlbt\nJbVnzpxp1lxpaWnKuXPnlJEjRyrffvvtPdfr2bOnUlxc3KxZGptLjfP1yiuvKG+++aaiKIry5ptv\n1vv/UVFa5nyZcvxffPFFnUuwBwwY0KyZTM21f/9+ZfLkyc2e5acOHjyoHD9+XAkKCqr3eTXOlym5\n1Dhfly5dUo4fP64oiqKUl5crfn5+Lf7nq82OEMaNG4eNzQ8XUQ0aNIi8vLy71jFlnqamFhgYSEBA\nQLPu436YkkuN85WQkEB0dDQA0dHRbN++vVn393Oaal4vNXKpZcSIETg7O9/zeTXOlym51ODu7k5Y\nWBgAHTt2JDAw8K4pgJr7fLXZQvhv7733HhMnTrxruSlzMKlFo9Ewbtw4+vfvT1xcnNpxAHXOV2Fh\nIe7u7sAPf2GKiorqXa8lzldTzeulRi6AY8eO0a9fPyZOnMiZM2eaNZOpzPnvoJrnKycnhxMnTjBw\n4MA6y5v7fLXqeyqPHTuWy5cv37X8jTfeYMqUKbU/29jY8OSTT961nmLCPE3NlashR48excPDg6Ki\nIiIjI+nduzcjRoxQNZca58tUzXG+fsqU42+uc/RzTNlnWFgYFy5coEOHDuzcuZNf/vKXGAyGZs1l\nCjXOlynUPF/Xr19n+vTprFq1CicnpzrPNff5atWFsGfPnp99Pj4+ns8//5y9e/fWe9JMmaepOXKZ\n4t85XF1dmTp1KsnJyQ/8BvegudQ4X25ubhQUFODu7k5BQQGurq71rtcc5+unmmJer+Zgyj7/+41l\n0qRJzJs3j5KSErp169as2RqixvkyhVrnq6qqiunTp/Pkk08ybdq0u55v7vPVZn9ltHv3bv785z+z\nY8cOHB0d610nPDwcg8FAdnY2lZWVbN26laioqBZOercbN25QUVFR+3NiYuI9r4ZoSWqcr6ioKOLj\n44EfCr6+kUxLnS9Tjj8qKooPPvgARVH4+uuv6dSpU+2vvJqLKbkuX75c+6/L5ORkampq6Nq1a7Pm\nMoUa58sUapwvRVGYPXs2gYGBLFy4sN51mv18NelH1GbE19dX0Wq1Sr9+/ZR+/fopzz//vKIoipKf\nn69MnDixdr0vvvhC8fPzU3x8fJQ//vGPzZ7r008/VTw9PRU7OzvF1dVVGTdu3F25srKylJCQECUk\nJETp06eP2eRSlJY/XyUlJcqYMWMUnU6njBkzRrly5cpduVryfNV3/OvXr1fWr1+vKIqi1NTUKPPm\nzVN8fHyU4ODgn72SrCVzvf3220qfPn2UkJAQZeDAgcrRo0dbJNfMmTOV7t27KzY2Noqnp6fy7rvv\nmsX5aiiXGufr8OHDCqD07du39n3riy++aNHzJd9UFkIIAbThXxkJIYRoHCkEIYQQgBSCEEKIH0kh\nCCGEAKQQhBBC/EgKQQghBCCFIIQQ4kdSCEIIIQD4/wFTydtMK8thmAAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 600x400 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rbpdMMo1cDcg",
        "colab_type": "code",
        "outputId": "8bfa779a-d9cd-42fc-be2b-e3472e7d66a4",
        "executionInfo": {
          "status": "ok",
          "timestamp": 1568240846788,
          "user_tz": 420,
          "elapsed": 611,
          "user": {
            "displayName": "Dan Abolafia",
            "photoUrl": "https://lh3.googleusercontent.com/a-/AAuE7mAQmxyT8biPkQeDgz5lf2ocSzJsOqH8BqBuLz1a=s64",
            "userId": "05741471333872541970"
          }
        },
        "colab": {
          "height": 269
        }
      },
      "source": [
        "# Median\n",
        "\n",
        "p=1.0\n",
        "q=2.0\n",
        "t = np.linspace(-2,2,200).reshape(-1, 1)\n",
        "L = np.mean(np.power(np.abs(-np.power(np.abs(t - x[np.newaxis,:]), p) - y[np.newaxis,:]), q), axis=1)\n",
        "#plt.ylim(0.5, 1.)\n",
        "plt.plot(t, L)\n",
        "plt.show()"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nxHInIjJD/wsu0gNfD/DnEQAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 600x400 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "6oJ-yA-8BrT4",
        "colab_type": "code",
        "outputId": "07efa0fe-48cf-4a7c-d76f-96be7bbc685d",
        "executionInfo": {
          "status": "ok",
          "timestamp": 1568240838954,
          "user_tz": 420,
          "elapsed": 628,
          "user": {
            "displayName": "Dan Abolafia",
            "photoUrl": "https://lh3.googleusercontent.com/a-/AAuE7mAQmxyT8biPkQeDgz5lf2ocSzJsOqH8BqBuLz1a=s64",
            "userId": "05741471333872541970"
          }
        },
        "colab": {
          "height": 269
        }
      },
      "source": [
        "# Mean\n",
        "\n",
        "p=2.0\n",
        "q=2.0\n",
        "t = np.linspace(-2,2,200).reshape(-1, 1)\n",
        "L = np.mean(np.power(np.abs(-np.power(np.abs(t - x[np.newaxis,:]), p) - y[np.newaxis,:]), q), axis=1)\n",
        "#plt.ylim(0.5, 1.)\n",
        "plt.plot(t, L)\n",
        "plt.show()"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 600x400 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "YdH9FIACacrE",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}